#ifndef GAME_H_
#define GAME_H_
#include "Constants.h"
#include "Cube.h"
#include "CubePile.h"
#include "Input.h"
#include "CubeEmitter.h"
#include "TextureLoader.h"
#include "Cursor.h"
#include "Camera.h"
#include "UserInterface.h"
#include "Sound.h"
#include "Character.h"
#include "Pattern.h"
#include "CubeBounceFinishedEventListener.h"
#include "CubePileGrid.h"
#include "HouseEmitter.h"
#include "WaterParticleSystem.h"

class Game : public CubeBounceFinishedEventListener
{
	bool events();
	void render();
	void animate(float timeD);
	void main_loop_function();
	void collisions(float timeD);
	
	CubePileGrid * cubePiles;
	
	Emitter * cubeEmitter;
	HouseEmitter * houseEmitter;
	
	WaterParticleSystem * waterParticleSystem;
	
	Cursor * cursor;
	Camera * camera;
	Input input;
	UserInterface * userInterface;
	TextureLoader textureLoader;
	Sound * sound;
	Pattern * pattern;
	
	Character * character;
public:
	Game();
	virtual ~Game();
	void run();
	virtual void cubeBounceFinished(int xIndex, int zIndex);
};

#endif /*GAME_H_*/
